GAN是一種很厲害的技術,可以透過GAN生成以假亂真的圖片。
為非監督式學習。
GAN分為Generator與Discriminator,Generator分別生成圖片,而Discriminator為圖片做評分,可以把它想像成老師與學生,學生一開始什麼都不懂,經過老師的評分後,學生一次又一次的進步,老師也一次又一次的嚴格。
負責生成圖片
一組Vecotr
一張圖片
負責打分數
一張圖片
一個分數
我們可以想像成Autoencoder的Decoder,就可以囉~
那甚麼是Autoencoder呢?簡單來說就是輸入一張圖片,Encoder會把圖片變成一段code,而Decoder會把code還原成圖片,而這個圖片與Encoder的輸入越接近越好。
剛剛的GAN吃一段code生成圖片,不能決定生成甚麼樣子的圖片,而Conditional GAN可以生成你想要的圖片,比如說,你輸入一段文字(一隻小雞)還有一個Vector,那麼GAN就會生成像是小雞的圖片囉。
這邊的Discriminator與上面的GAN不同,這邊還要輸入Generator的輸入,因為這樣才能知道Generator的輸出是否正確,比如說,你說我想要生成一隻小雞,但是Generator輸出一隻豬,但這隻豬非常真實,那Discriminator照理來說會給它很高分,因為它很真實,但這其實不是我們想要的,因此要輸入Generator的輸入,讓Discriminator知道到底Generator的輸出與輸入是否有匹配到。
Cycle是循環的意思,因此可想而之,Cycle GAN是一種循環的GAN。
A domain 轉到 B domain,B domain再轉回A domain,輸入與輸出越接近越好(Cycle consistency)
在做轉換時,可能會把資訊隱藏起來,例如轉換空拍圖變成衛星照時,有些黑點消失了,但轉換回來後,黑點又出現了。
截圖從CycleGAN, a Master of Steganography這篇論文中提取
今天大約介紹了GAN的想法與做法,明天來實作GAN。
Hung-yi Lee:GAN Lecture 3 (2018): Unsupervised Conditional Generation